package day_8_18;

/**
 * 2379. 得到 K 个黑块的最少涂色次数
 * https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks/description/
 */
public class Main2 {
    public int minimumRecolors(String blocks, int k) {
        // 先进行定长，之后进行进窗口和出窗口的时候，查看是否是‘W’ 如果是进窗口+1，出窗口-1
        // 之后每次进出一次更新返回值
        int left = 0;
        int right = 0;
        int count = 0;
        while(right < k) {
            count += blocks.charAt(right) == 'W' ? 1 : 0;
            right++;
        }
        // 定完窗口，之后就是 滑动窗口
        int ret = count;
        int n = blocks.length();
        while(right < n) {
            // 入窗口
            count += blocks.charAt(right) == 'W' ? 1 : 0;
            // 出窗口
            count -= blocks.charAt(left) == 'W' ? 1 : 0;
            // 更新数据
            ret = Math.min(ret,count);
            // 往后滑动窗口
            left++;
            right++;
        }
        return ret;
    }
}
